package Persistencia;

import Negocio.Consulta;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Victor
 */
public class Consultas {
    
    
    
    private static List consultas;

    public Consultas() {
        
        consultas = new ArrayList<Consulta>();
        leitura();
    }
    
    public void grava() 
    {
        try {
            FileOutputStream fo = new FileOutputStream("src/Serializados/Consultas.dat");
            ObjectOutputStream oo = new ObjectOutputStream(fo);
            oo.writeObject(consultas);
            oo.close();
            System.out.println("Dados gravados com sucesso");
        } catch (Exception e) {
            System.err.println("Erro ao serializar " + e.getMessage());
        }
    }

    public void leitura() 
    {
        try {
            File arq = new File("src/Serializados/Consultas.dat");
            FileInputStream fi = new FileInputStream(arq.getAbsolutePath());
            ObjectInputStream oi = new ObjectInputStream(fi);
            consultas = (ArrayList) oi.readObject();
            oi.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    public Consulta buscarPaciente(String pNome) {
        
        Consulta retorno = null;
        for (int i = 0; i < consultas.size(); i++) 
        {
            Consulta l = (Consulta) consultas.get(i);
            if (l.getPaciente().getNome().toLowerCase().contains(pNome.toLowerCase())) 
            {
                retorno = l;
                break;
            }
        }
        return retorno;
    }
    
 
   public Consulta buscarPacientePorParteDeNome(String pNome) {
        
        Consulta retorno = null;
        for (int i = 0; i < consultas.size(); i++) 
        {
            Consulta l = (Consulta) consultas.get(i);
            if (l.getPaciente().getNome().toLowerCase().contains(pNome.toLowerCase())) 
            {
                retorno = l;
                break;
            }
        }
        return retorno;
    }
   
      public Consulta buscarConsultaPorMedico(String pMedico) {
        
        Consulta retorno = null;
        for (int i = 0; i < consultas.size(); i++) 
        {
            Consulta l = (Consulta) consultas.get(i);
            
            if (l.getMedico().getNome().toLowerCase().contains(pMedico.toLowerCase())) 
            {
                retorno = l;
                break;
            }
        }
        return retorno;
    }

    public ArrayList<Consulta> getConsultas() 
    {
        return (ArrayList<Consulta>) consultas;
    }

    public void adiciona(Consulta p) 
    {
        consultas.add(p);
        grava();
    }
    
    public void excluirConsulta(Consulta p)
    {
        consultas.remove(p);
        grava();
    }   
}
